背景
在使用Spring Data操作MongoDB中:
- 在保存一个实体的时候,如果被@DBRef标识的类只传入Id,保存后返回的结果并没有全部的引用类内容,只有Id。
- 保存实体,不能保存引用实体。
例如:我们有一个实体Person
,有一个实体EmailAddress
。
|
|
|
|
当我们调用保存方法的时候:
|
|
上述的代码中,返回的person只有id,没有emailAddress的其他值。
|
|
上述的代码中,emailAddress不能被保存。
解决
生命周期事件
Spring Data MongoDB中存在一些生命周期事件,如:onBeforeConvert, onBeforeSave, onAfterSave, onAfterLoad and onAfterConvert等。我们可以继承AbstractMappingEventListener
,然后重写这些方法,即可以实现。
代码
|
|
|
|
|
|
|
|
|
|
以上是核心代码。至此,我们就可以解决上述的问题了。
参考:http://www.baeldung.com/cascading-with-dbref-and-lifecycle-events-in-spring-data-mongodb